const moment = require('moment');
module.exports = (db, DataTypes) => {
  return db.define('WorkingSchedule', {
    teamName: DataTypes.STRING,
    startTime: {  // 值班开始时间
      type: DataTypes.DATE,
      set({year, month, day, startHour, startMinute}) {
        let unix = moment({ year, month, day, hour: startHour, minute: startMinute }).unix();  // todo: 通过moment().year.month.day这样设置是不正确的，要像左边这样设置
        this.setDataValue('startTime', new Date(unix * 1000));
      }
    },
    endTime: {   // 值班结束时间，如果结束的小时+分钟小于等于开始的小时+分钟，那么就是跨天，endTime的day+=1，但是要判断如果是跨月份的话，如果是跨年份的话= - =
      type: DataTypes.DATE,
      set({year, month, day, startHour, endHour, startMinute, endMinute}) {
        let unix = moment({ year, month, day, hour: endHour, minute: endMinute }).unix();
        if(startHour > endHour || (startHour === endHour && startMinute >= endMinute)) {  // 加一天
          unix = moment.unix(unix).add(1, 'day').unix();
        }
        this.setDataValue('endTime', new Date(unix * 1000));
      }
    },
    scheduleType: DataTypes.STRING,
    year: DataTypes.INTEGER,
    month: DataTypes.INTEGER,
    day: DataTypes.INTEGER,
    startHour: DataTypes.INTEGER,  // 开始小时
    endHour: DataTypes.INTEGER,  // 结束小时
    startMinute: DataTypes.INTEGER,  // 开始分钟
    endMinute: DataTypes.INTEGER, // 结束分钟
    createdAt: DataTypes.DATE,
    updatedAt: DataTypes.DATE,
  });
};
